package com.zenithmind.user.service.domain;

import com.zenithmind.user.pojo.domain.User;
import com.zenithmind.user.pojo.dto.LoginDTO;
import com.zenithmind.user.pojo.dto.SimpleLoginDTO;
import com.zenithmind.user.pojo.dto.AdminLoginDTO;
import com.zenithmind.user.pojo.vo.UserVO;
import com.zenithmind.common.result.Result;

/**
 * 认证服务接口
 * 遵循接口隔离原则：只包含认证相关功能
 * 遵循单一职责原则：专注于用户认证逻辑
 */
public interface AuthenticationService {
    
    /**
     * 用户登录
     */
    Result<UserVO> login(LoginDTO loginDTO);
    
    /**
     * 简单登录（测试用）
     */
    Result<UserVO> simpleLogin(SimpleLoginDTO simpleLoginDTO);
    
    /**
     * 管理员登录
     */
    Result<UserVO> adminLogin(AdminLoginDTO adminLoginDTO);
    
    /**
     * 验证验证码
     */
    boolean verifyCode(String email, String code, int type);
    
    /**
     * 生成JWT令牌
     */
    String generateToken(User user);
    
    /**
     * 刷新令牌
     */
    String refreshToken(String token);
    
    /**
     * 验证令牌
     */
    boolean validateToken(String token);
    
    /**
     * 从令牌中获取用户ID
     */
    String getUserIdFromToken(String token);
}
